package com.learn.mvc.controller;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author liangchao
 * @create 2021-10-12 16:42
 */
@Controller
public class HelloController {
    // @RequestMapping注解：处理请求和控制器方法之间的映射关系
    // @RequestMapping注解的value属性可以通过请求地址匹配请求，/表示的当前工程的上下文路径
    // 访问连接：http://localhost:8080/springmvc/
    // 方法名可以随便，因为请求通过控制器找到该方法是通过 @RequestMapping实现。
//    @RequestMapping(value = "/") value可省略不写。相当于：
    @RequestMapping("/")
    public String index() {
        //设置视图名称，也就是要转发跳转的页面，
        // 被视图解析器ThymeleafViewResolver解析后，补充上视图前缀后缀，就能获取路径/WEB-INF/templates/index.html
        return "index";
    }

    @RequestMapping("/target")
    public String toTarget() {
        return "target";
    }


    @RequestMapping("/toTestParam")
    public String toTestParam() {
        return "testParam";
    }

    @RequestMapping("/toTestView")
    public String toTestView() {
        return "test_view";
    }

    @RequestMapping("/toTestRest")
    public String toTestRest() {
        return "test_rest";
    }

    @RequestMapping("/toHttpMessage")
    public String toHttpMessage() {
        return "http_message";
    }

    @RequestMapping("/toFile")
    public String toFile() {
        return "file";
    }

    /**
     * 测试拦截器
     * ant风格路径：? 单个字符  * 一个或多个字符  ** 表示一层或多层目录
     * @return
     */
    @RequestMapping("/**/testInterceptor")
    public String testInterceptor(){
        return "success";
    }

    /**
     * 测试异常过滤器
     * @return
     */
    @RequestMapping("/testExceptionHandler")
    public String testExceptionHandler(){
        System.out.println(1/0);
        return "success";
    }

}
